home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-05 / netpq.zip / F2.C < prev    next >
Text File  |  1992-02-24  |  3KB  |  125 lines

  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <dos.h>
  4.  
  5. #include "nos.h"
  6. #include "noslib.h"
  7. #include "netpq.h"
  8.  
  9. extern struct serverdef *server;
  10. extern struct localqueuedef *localqueue;
  11.  
  12. extern int maxlocalqueuecount, localqueuecount, numberoflogins;
  13.  
  14. f2keypressed ()
  15. {
  16. //  handles response for f2 key (control queue)
  17.  
  18. int f2menuitems = 4;
  19. char *f2menu [] =
  20.     {
  21.     "Cancel File",
  22.     "Hold File",
  23.     "Release File",
  24.     "Rush File",
  25.     "Show Info",
  26.     "View File",
  27.     "Copy File",
  28.     "Keep File",
  29.     };
  30. int f2xsize = strlen (f2menu [2]);
  31.  
  32. int i, action, servernum, queuenum;
  33. int ybase;
  34.  
  35.     ybase = wherey () + 1;
  36.     if (ybase + f2menuitems > 24)
  37.     ybase = 24 - f2menuitems;
  38.  
  39.     if (localqueuecount == 0)
  40.     {
  41.     message ("THERE ARE NO FILES QUEUED\a", true);
  42.     nohighlight ();
  43.     sleep (2);
  44.     return 0;
  45.     }
  46.     do
  47.     {
  48.     if ( (action = menu (&f2menu, f2menuitems, f2xsize, firstxpos, ybase)) != -1)
  49.         {
  50.         do
  51.         {
  52.         if ( (servernum = displayservernames (ybase)) != -1)
  53.             {
  54.             if ( (queuenum = displayqueuenumbers (servernum, ybase)) != -1)
  55.             {
  56.             handlequeuerequest (action, servernum, queuenum);
  57.             return 0;
  58.             }
  59.             }
  60.         }while (servernum != -1);
  61.         }
  62.     }while (action != -1);
  63.     return -1;
  64. }
  65.  
  66.  
  67. displayqueuenumbers (int servernum, int ybase)
  68. {
  69. //  displays a menu of all queued file sequence numbers
  70.  
  71. int i, selection, j;
  72. char *localqueuenames [20];
  73. char buf [20];
  74.  
  75.     i = 0;
  76.     j = 0;
  77.  
  78.     while ( (i < maxlocalqueuecount) && (i < 20) )
  79.     {
  80.     if (localqueue [i] .server == servernum)
  81.         localqueuenames [j++] = &localqueue [i] .sequencestring;
  82.     i++;
  83.     }
  84.  
  85.     if (j > (21 - (numberoflogins * 5)) / numberoflogins)
  86.     j = 1 + (21 - (numberoflogins * 5)) / numberoflogins;
  87.  
  88.     if (ybase + j > 24)
  89.     ybase = 24 - j;
  90.  
  91.     if (j > 0)
  92.     selection = menu (&localqueuenames, j, 6, thirdxpos, ybase);
  93.     else
  94.     {
  95.     gotoxy (1, 1);
  96.     errorhighlight ();
  97.     message ("THERE ARE NO FILES QUEUED\a", true);
  98.     nohighlight ();
  99.     sleep (2);
  100.     return (-1);
  101.     }
  102.     return selection;
  103. }
  104.  
  105.  
  106.  
  107.  
  108. handlequeuerequest (int action, int servernum, int queuenum)
  109. {
  110. //  processes the queue action requested by the operator
  111.  
  112.     action += CQ_cancel;
  113.  
  114.     if (action <= CQ_rush)
  115.     {
  116.     if (action == CQ_cancel)
  117.         if (checkqueueprivileges (servernum) == -1)
  118.         return -1;
  119.     message ("UPDATING, PLEASE WAIT ...", false);
  120.     if (NOSControlQueue (&localqueue [queuenum] .printer, action, &server [servernum] .servername, localqueue [queuenum] .QE_sequence) == -1)
  121.         NOSperror ("NOSControlQueue");
  122.     return 0;
  123.     }
  124. }
  125.